Skip to content

feat(release): build binaries for 4 targets on tag push#80

Merged
hyperpolymath merged 1 commit into
mainfrom
feat/release-workflow-binaries
May 14, 2026
Merged

feat(release): build binaries for 4 targets on tag push#80
hyperpolymath merged 1 commit into
mainfrom
feat/release-workflow-binaries

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

Summary

Per V-L3-L1: the release workflow had TODO-shaped stubs. Tags would create a Release with notes but no binaries; users had to cargo install --path ..

Wire it up:

  • build job becomes a 4-target matrix:
    • x86_64-unknown-linux-gnu (ubuntu-latest, native)
    • aarch64-unknown-linux-gnu (ubuntu-latest, via cross)
    • aarch64-apple-darwin (macos-latest, native)
    • x86_64-pc-windows-msvc (windows-latest, native, .exe)
  • Each lane stages binary + LICENSE + README.adoc and packages as .tar.gz or .zip with a sidecar .sha256.
  • release job downloads all release-* artifacts and attaches them via softprops/action-gh-release.

Permissions unchanged at top level (contents: read); release job has contents: write (already needed). All actions SHA-pinned. SLSA provenance base64-subjects wiring is out of scope.

Closes

Test plan

  • Cut a v0.1.0-rc1 tag after merge to verify four artifacts upload to the Release

Closes #58.

The release workflow had a TODO-shaped build job that didn't actually
produce any artifact, and the release job had no `files:` attached.
Tags would create a Release with notes but no binaries; users had to
`cargo install --path .` from source.

Wire it up:

  - **build** job becomes a matrix across four targets:
    * `x86_64-unknown-linux-gnu` on ubuntu-latest (native)
    * `aarch64-unknown-linux-gnu` on ubuntu-latest via `cross`
    * `aarch64-apple-darwin` on macos-latest (native)
    * `x86_64-pc-windows-msvc` on windows-latest (native, `.exe`)
  - Each lane runs `cargo build --release --target <T>`, stages the
    binary + LICENSE + README.adoc into a versioned directory, and
    packages it as `.tar.gz` (Unix) or `.zip` (Windows) with a
    sidecar `.sha256` checksum.
  - Artifacts upload per-target with `actions/upload-artifact`.
  - **release** job now downloads all `release-*` artifacts and
    attaches `*.tar.gz`, `*.zip`, and `*.sha256` to the GitHub Release
    via `softprops/action-gh-release`.

The SLSA provenance job's `base64-subjects` still needs wiring (out of
scope for this issue); the build artifacts are already
SHA-256 checksummed via the sidecar files.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@hyperpolymath hyperpolymath merged commit 0cac039 into main May 14, 2026
16 of 18 checks passed
@hyperpolymath hyperpolymath deleted the feat/release-workflow-binaries branch May 14, 2026 14:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

V-L3-L1: add release workflow building binaries for 4 targets

1 participant